package com.atguigu.security.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 *  解决跨域问题 p86 前端向后端发送请求出现 后端拒绝请求  返回403 Forbidden
 *
 *
 * 跨域请求：浏览器在跨域请求前会发送一个预检（OPTIONS）请求，以确认服务器是否允许该请求。
 *
 * CORS 配置缺失：服务器未正确设置 Access-Control-Allow-Origin 或 Access-Control-Allow-Methods 等响应头。
 *
 * 安全限制：某些服务器可能默认拒绝 OPTIONS 请求。
 *
 *在 Spring Boot 中，可以通过 @CrossOrigin 注解或全局配置来解决跨域问题。
 *
 * 如果使用了 Spring Security，默认启用了 CSRF 保护，可能会导致 OPTIONS 请求被拒绝。
 * 禁用 CSRF：可以在 Security 配置中禁用 CSRF，但禁用后，某些功能可能会受到影响。
 *
 * import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 * import org.springframework.security.web.SecurityFilterChain;
 * @Bean
 * public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
 * http.csrf().disable(); // 禁用 CSRF 保护
 * return http.build();
 * }
 *
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {
    //这段代码配置了Spring Boot应用的CORS（跨域资源共享）策略，具体功能如下：
    //允许来自 http://localhost:9090 的跨域请求；
    //允许的请求方法包括：GET、POST、PUT、DELETE 和 OPTIONS；
    //允许所有请求头（allowedHeaders("*")）；
    //配置对所有接口路径（/**）生效。
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("http://localhost:9090","http://localhost:9528") // 指定允许的来源
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .allowedHeaders("*");
    }
}